package newx.com.control
{
	import flash.display.DisplayObject;

	/**
	 * 集成了Image和Sprite的功能，可以用来加载图片和swf资源，
	 * 也可以作为容器添加其他显示对象到容器内。<br>
	 * 支持编辑器。
	 * @author wangjun
	 * 
	 */	
	public interface IClip extends IControl
	{
		/**
		 * 作为内容加载的 URL、对象、类或类的字符串名称。 
		 * */		
		function get source():Object;
		function set source(val:Object):void;
		
		/**
		 * 当控件作为Image使用时，在加载前预先显示的图片，主要用于当在加载过程中
		 * 显示的占位符。
		 * */
		function get defaultImage():DisplayObject;
		function set defaultImage(val:DisplayObject):void;
		
		/**
		 * 一个标志，指示内容是自动开始加载还是等待调用 load() 方法 
		 * */		
		function get autoLoad():Boolean;
		function set autoLoad(val:Boolean):void;
		
		/**
		 * 是否缓存已经加载的显示对象，当相同对象（加载地址相同）被要求加载时，
		 * 是否从缓存重获取。由ResManager实现，因此需要满足ResManager对资源的要求。
		 * */
		function get isCache():Boolean;
		function set isCache(val:Boolean):void;
		
		/**
		 * 已加载的 SWF 或图像文件的字节数。如果是直接添加显示对象，该值无效，返回0。
		 * */		
		function get bytesLoaded():uint;
		
		/**
		 * SWF 或图像文件的总大小。如果是直接添加显示对象，该值无效，返回0。
		 * */		
		function get bytesTotal():uint;
			
		/**
		 * 已加载图像或 SWF 文件的百分比。如果是直接添加显示对象，该值无效，返回1。
		 * */		
		function get percentLoaded():Number;
				
		/**
		 * 此属性包含表示在控件中加载的内容或直接添加的对象 
		 * */		
		function get content():DisplayObject;
		
		/**
		 * 控件加载的缩放内容（指加载容器）的高度（以像素为单位）。
		 * */
		function get contentHeight():int;
		function set contentHeight(val:int):void;
		
		/**
		 * 控件加载的缩放内容（指加载容器）的宽度（以像素为单位）。
		 * */		
		function get contentWidth():int;
		function set contentWidth(val:int):void;
			
		/**
		 * 一个标志，指示是否保持加载内容的高宽比。
		 * */
		function get maintainAspectRatio():Boolean;
		function set maintainAspectRatio(val:Boolean):void;
		
		/**
		 * 一个标志，指示是缩放内容以适应控件大小还是调整控件大小使其适应内容大小。 
		 * */		
		function get scaleContent():Boolean;
		function set scaleContent(val:Boolean):void;
		
		/**
		 * 清空容器里的显示对象（注意，此方法不清除容器内由外部添加的事件）
		 * */
		function clear():void;
		
		/**
		 * 启动加载，且有在 autoLoad 设置为 False 执行此函数才起作用。
		 * */		
		function load():void;
		
		/**
		 * 添加加载事件处理函数。只有在 autoLoad 设置为 False 且在调用load()前设置
		 * 才有效。
		 * @param func	：用于处理加载事件的函数。
		 * @param type	：加载事件的事件类型，支持：Event.COMPLETE、
		 * ProgressEvent.PROGRESS、IOErrorEvent.IO_ERROR、Event.ADDED
		 * 暂不支持：HTTPStatusEvent.HTTP_STATUS、Event.INIT、
		 * Event.OPEN、Event.UNLOAD、
		 * 
		 * */		
		function addLoadedEvent(func:Function, type:String):void;
		
		function removeLoadedEvent(func:Function, type:String):void;
	}
}